package com.design.xiangyuan;

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * 享元模式
 * 关键点
 * 共享内部状态：享元对象的内部状态是可以共享的，通常存储在享元对象内部。
 * 外部状态：外部状态是由客户端提供的，享元对象在操作中使用这些外部状态。
 * 享元工厂：享元工厂负责管理和创建享元对象，确保相同的对象被重复使用。
 * 减少内存开销：通过共享对象，减少了内存中对象的数量，提高了性能。
 * 适用场景
 * 大量细粒度对象：当系统中有大量细粒度对象时，使用享元模式可以显著减少内存使用。
 * 对象状态大部分可以共享：如果对象的状态大部分可以共享，只有少部分状态需要外部提供，享元模式非常适合。
 * 对象创建开销大：如果对象的创建开销较大，使用享元模式可以减少创建和销毁对象的开销。
 * @author ytj
 * @date 2024/11/28 10:18
 */
@Slf4j
public class XiangyuanTest {
    public static void main(String[] args) throws InterruptedException{
        ActivityControlller activityControlller = new ActivityControlller();
        for(int i=0;i<10;i++) {
            Activity activity=activityControlller.queryActivityInfo("100");
            log.info("获取活动信息为:{}", JSONUtil.toJsonStr(activity));
            Thread.sleep(1200);
        }
    }
}
